ORA

您所在的位置:网站首页 ORA-00054:resource busy ORA

ORA

#ORA| 来源: 网络整理| 查看: 265

一、故障描述:

  在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,或者是增加修改列字段时时,报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired,如下图。按照字面意思,是资源忙,被占用了。处理思路:查到谁在占用资源,并且杀掉占用该资源的会话就可以了。有可能产生的原因有:1.创建索引时会产生的锁  2.dml 语句会产生的锁  3.索引创建时加上关键字 online时产生的锁。解决处理方法:1.等待其他会话释放资源 2.找出占用资源的会话,并删除 3.重启数据库,当然只有第2种比较适用。

pl-sql中报错如图:

解决方法如下:1、用dba权限的用户查看数据库都有哪些锁

SELECT T2.USERNAME,T2.SID,T2.SERIAL#,T2.LOGON_TIMEFROM V$LOCKED_OBJECT T1,V$SESSION T2WHERE T1.SESSION_ID=T2.SID ORDER BY T2.LOGON_TIME;

如:testuser 339 13545 2009-3-5 17:40:05知道被锁的用户testuser,sid为339,serial#为13545

2、根据sid查看具体的sql语句,如果sql不重要可以跳过,直接kill

SELECT SQL_TEXT FROM V$SESSION A,V$SQLTEXT_WITH_NEWLINES BWHERE DECODE(A.SQL_HASH_VALUE, 0, PREV_HASH_VALUE, SQL_HASH_VALUE)=B.HASH_VALUEAND A.SID=&SID ORDER BY PIECE;

查出来的sql,如: BEGIN :ID := SYS.DBMS_TRANSACTION.LOCAL_TRANSACTION_ID; END;

3、kill该事务(释放锁)ALTER SYSTEM KILL SESSION '339,13545';

4、这样就可以执行其他的事务sql语句了

 如给表加一列:     ALTER TABLE TEST ADD ORG_NAME VARCHAR2(50)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3